home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / comm / tcp / rxsocket.lha / rxsocket / examples / echotcp.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1998-10-27  |  1.4 KB  |  62 lines

  1. /*
  2.     A very simple echo tcp client.
  3.     Show how to make a basic connection to a tcp service.
  4.     To test it on localhost, be sure echo/tcp is enabeld
  5.     in the services and inetd database, then write
  6.     rx echotcp localhost.
  7. */
  8.  
  9. if ~show("L","rexxsupport.library") then
  10.     if ~addlib("rexxsupport.library",0,-30) then do
  11.         say "no rexxsupport.library"
  12.         exit
  13.     end
  14. if ~show("L","rxsocket.library") then
  15.     if ~addlib("rxsocket.library",0,-30) then do
  16.         say "no rxsocket.library"
  17.         exit
  18.     end
  19. if ~show("L","rmh.library") then
  20.     if ~addlib("rmh.library",0,-30) then do
  21.         say "no rmh.library"
  22.         exit
  23.     end
  24.  
  25. prg = ProgramName("NOEXT")
  26.  
  27. if ~RMH_ReadArgs("HOST/A") then do
  28.     call PrintFault(IoErr(),prg)
  29.     exit
  30. end
  31.  
  32. addr = resolve(parm.0.value)
  33. if addr=="-1" then call err "no host <"parm.0.value">"
  34.  
  35. if ~getservbyname("SE","echo","tcp") then
  36.     call err "echo tcp service not found"
  37.  
  38. sin.ADDRFAMILY = "INET"
  39. sin.ADDRADDR   = addr
  40. sin.ADDRPORT   = SE.SERVPORT
  41.  
  42. sock = socket("INET","STREAM","IP")
  43. if sock<0 then call err "no socket ("errno()")"
  44.  
  45. if connect(sock,"SIN")<0 then call err "connect error ("errno()")"
  46.  
  47. REQUEST = "echo service test"
  48. res = send(sock,REQUEST)
  49. if res~=length(REQUEST) then call err "send error ("errno()")"
  50.  
  51. len = recv(sock,"BUF",256)
  52. if len<0 then call err "recv error ("errno()")"
  53.  
  54. say buf
  55. call CloseSocket(sock)
  56. exit
  57.  
  58. err: procedure expose prg
  59. parse arg msg
  60.     say prg":" msg
  61.     exit
  62.